﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using equinoxWeb.Models;
using MySql.Data.MySqlClient;

namespace equinoxWeb.GestionConexion
{
    public class ArchivoFunction
    {
        public static List<Archivo> getListaArchivosXCaso(int idCaso)
        {
            List<Archivo> listaArchivos = new List<Archivo>();
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("SELECT idarchivo,nombre,ruta FROM archivo WHERE idCaso=@id", con);
            cmd.Parameters.AddWithValue("@id", idCaso);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();
            while (res.Read())
            {
                Archivo archivo = new Archivo();
                archivo.Id = res.GetInt32("idarchivo");
                archivo.Nombre = res.IsDBNull(1) ? "" : res.GetString("nombre");
                archivo.Ruta = res.IsDBNull(2) ? "" : res.GetString("ruta");
                listaArchivos.Add(archivo);
            }
            res.Close();
            gestor.CloseConnection();
            return listaArchivos;
        }

        public static void guardarArchivo(Archivo archivo, int idCaso)
        {
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("INSERT INTO archivo (idarchivo,nombre,ruta,idCaso) VALUES (@id,@nombre,@ruta,@idCaso)", con);
            cmd.Parameters.AddWithValue("@id", ArchivoFunction.getNextId());
            cmd.Parameters.AddWithValue("@nombre", archivo.Nombre);
            cmd.Parameters.AddWithValue("@ruta", archivo.Ruta);
            cmd.Parameters.AddWithValue("@idCaso", idCaso);
            cmd.Prepare();
            cmd.ExecuteNonQuery();
            gestor.CloseConnection();
        }

        public static void eliminarArchivo(int idarchivo)
        {
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("DELETE FROM archivo where idarchivo = @id", con);
            cmd.Parameters.AddWithValue("@id", idarchivo);
            cmd.Prepare();
            cmd.ExecuteNonQuery();
            gestor.CloseConnection();
        }

        public static Archivo getArchivoById(int idarchivo)
        {
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("SELECT idarchivo,nombre,ruta FROM archivo WHERE idarchivo=@id", con);
            cmd.Parameters.AddWithValue("@id", idarchivo);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();
            Archivo archivo = null;
            if (res.Read())
            {
                archivo = new Archivo();
                archivo.Id = res.GetInt32("idarchivo");
                archivo.Nombre = res.IsDBNull(1) ? "" : res.GetString("nombre");
                archivo.Ruta = res.IsDBNull(2) ? "" : res.GetString("ruta");
            }
            res.Close();
            gestor.CloseConnection();
            return archivo;
        }
        public static int getNextId()
        {
            int idarchivo = 0;
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("select idarchivo from archivo order by idarchivo desc LIMIT 1 ", con);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();
            if (res.Read())
            {
                idarchivo = res.GetInt32(0);
            }
            else
            {
                idarchivo = 0;
            }
            idarchivo++;
            res.Close();
            gestor.CloseConnection();
            return idarchivo;
        }

        public static List<Archivo> getListaArchivosPrivados()
        {
            List<Archivo> listaArchivos = new List<Archivo>();
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("SELECT idarchivo,nombre,ruta FROM archivo WHERE idCaso=@id", con);
            cmd.Parameters.AddWithValue("@id", 0);
            cmd.Prepare();
            MySqlDataReader res = cmd.ExecuteReader();
            while (res.Read())
            {
                Archivo archivo = new Archivo();
                archivo.Id = res.GetInt32("idarchivo");
                archivo.Nombre = res.IsDBNull(1) ? "" : res.GetString("nombre");
                archivo.Ruta = res.IsDBNull(2) ? "" : res.GetString("ruta");
                listaArchivos.Add(archivo);
            }
            res.Close();
            gestor.CloseConnection();
            return listaArchivos;
        }

        public static void guardarArchivoEquinox(Archivo archivo)
        {
            GestorConexion gestor = new GestorConexion();
            gestor.OpenConnection();
            MySqlConnection con = gestor.Connection;
            MySqlCommand cmd;
            cmd = new MySqlCommand("INSERT INTO archivo (idarchivo,nombre,ruta,idCaso) VALUES (@id,@nombre,@ruta,@idCaso)", con);
            cmd.Parameters.AddWithValue("@id", ArchivoFunction.getNextId());
            cmd.Parameters.AddWithValue("@nombre", archivo.Nombre);
            cmd.Parameters.AddWithValue("@ruta", archivo.Ruta);
            cmd.Parameters.AddWithValue("@idCaso", 0);
            cmd.Prepare();
            cmd.ExecuteNonQuery();
            gestor.CloseConnection();
        }
    }
}